home *** CD-ROM | disk | FTP | other *** search
/ QuickTime 2.0 Developer Kit / QuickTime 2.0 Developer Kit.iso / mac / MAC / Programming Stuff / Interfaces / PInterfaces / Devices.p < prev    next >
Encoding:
Text File  |  1994-11-11  |  10.9 KB  |  328 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        Devices.p
  3.  
  4.      Copyright:    © 1984-1994 by Apple Computer, Inc.
  5.                  All rights reserved.
  6.  
  7.      Version:    Universal Interfaces 2.0a3  ETO #16, MPW prerelease.  Friday, November 11, 1994. 
  8.  
  9.      Bugs?:        If you find a problem with this file, send the file and version
  10.                  information (from above) and the problem description to:
  11.  
  12.                      Internet:    apple.bugs@applelink.apple.com
  13.                      AppleLink:    APPLE.BUGS
  14.  
  15. }
  16.  
  17. {$IFC UNDEFINED UsingIncludes}
  18. {$SETC UsingIncludes := 0}
  19. {$ENDC}
  20.  
  21. {$IFC NOT UsingIncludes}
  22.  UNIT Devices;
  23.  INTERFACE
  24. {$ENDC}
  25.  
  26. {$IFC UNDEFINED __DEVICES__}
  27. {$SETC __DEVICES__ := 1}
  28.  
  29. {$I+}
  30. {$SETC DevicesIncludes := UsingIncludes}
  31. {$SETC UsingIncludes := 1}
  32.  
  33.  
  34. {$IFC UNDEFINED __OSUTILS__}
  35. {$I OSUtils.p}
  36. {$ENDC}
  37. {    Types.p                                                        }
  38. {        ConditionalMacros.p                                        }
  39. {    MixedMode.p                                                    }
  40. {    Memory.p                                                    }
  41.  
  42. {$IFC UNDEFINED __FILES__}
  43. {$I Files.p}
  44. {$ENDC}
  45.  
  46. {$IFC UNDEFINED __QUICKDRAW__}
  47. {$I Quickdraw.p}
  48. {$ENDC}
  49. {    QuickdrawText.p                                                }
  50.  
  51. {$IFC UNDEFINED __EVENTS__}
  52. {$I Events.p}
  53. {$ENDC}
  54.  
  55. {$IFC UNDEFINED __DIALOGS__}
  56. {$I Dialogs.p}
  57. {$ENDC}
  58. {    Errors.p                                                    }
  59. {    Windows.p                                                    }
  60. {        Controls.p                                                }
  61. {            Menus.p                                                }
  62. {    TextEdit.p                                                    }
  63.  
  64. {$PUSH}
  65. {$ALIGN MAC68K}
  66. {$LibExport+}
  67.  
  68. CONST
  69.     chooserInitMsg                = 11;                            { the user selected this device package }
  70.     newSelMsg                    = 12;                            { the user made new device selections }
  71.     fillListMsg                    = 13;                            { fill the device list with choices }
  72.     getSelMsg                    = 14;                            { mark one or more choices as selected }
  73.     selectMsg                    = 15;                            { the user made a selection }
  74.     deselectMsg                    = 16;                            { the user canceled a selection }
  75.     terminateMsg                = 17;                            { allows device package to clean up }
  76.     buttonMsg                    = 19;                            { the user selected a button }
  77.  
  78. { Values of the 'caller' parameter to a Chooser device package }
  79.     chooserID                    = 1;
  80.  
  81. { Values of the 'message' parameter to a Control Panel 'cdev' }
  82.     initDev                        = 0;                            {Time for cdev to initialize itself}
  83.     hitDev                        = 1;                            {Hit on one of my items}
  84.     closeDev                    = 2;                            {Close yourself}
  85.     nulDev                        = 3;                            {Null event}
  86.     updateDev                    = 4;                            {Update event}
  87.     activDev                    = 5;                            {Activate event}
  88.     deactivDev                    = 6;                            {Deactivate event}
  89.     keyEvtDev                    = 7;                            {Key down/auto key}
  90.     macDev                        = 8;                            {Decide whether or not to show up}
  91.     undoDev                        = 9;
  92.     cutDev                        = 10;
  93.     copyDev                        = 11;
  94.     pasteDev                    = 12;
  95.     clearDev                    = 13;
  96.     cursorDev                    = 14;
  97.  
  98. { Special values a Control Panel 'cdev' can return }
  99.     cdevGenErr                    = -1;                            {General error; gray cdev w/o alert}
  100.     cdevMemErr                    = 0;                            {Memory shortfall; alert user please}
  101.     cdevResErr                    = 1;                            {Couldn't get a needed resource; alert}
  102.     cdevUnset                    = 3;                            { cdevValue is initialized to this}
  103.  
  104. { Values of the 'message' parameter to a Monitor 'mntr' }
  105.     initMsg                        = 1;                            {initialization}
  106.     okMsg                        = 2;                            {user clicked OK button}
  107.     cancelMsg                    = 3;                            {user clicked Cancel button}
  108.     hitMsg                        = 4;                            {user clicked control in Options dialog}
  109.     nulMsg                        = 5;                            {periodic event}
  110.     updateMsg                    = 6;                            {update event}
  111.     activateMsg                    = 7;                            {not used}
  112.     deactivateMsg                = 8;                            {not used}
  113.     keyEvtMsg                    = 9;                            {keyboard event}
  114.     superMsg                    = 10;                            {show superuser controls}
  115.     normalMsg                    = 11;                            {show only normal controls}
  116.     startupMsg                    = 12;                            {code has been loaded}
  117.  
  118. { control codes for DeskAccessories }
  119.     goodbye                        = -1;                            { heap being reinitialized }
  120.     killCode                    = 1;                            { KillIO requested }
  121.     accEvent                    = 64;                            { handle an event }
  122.     accRun                        = 65;                            { time for periodic action }
  123.     accCursor                    = 66;                            { change cursor shape }
  124.     accMenu                        = 67;                            { handle menu item }
  125.     accUndo                        = 68;                            { handle undo command }
  126.     accCut                        = 70;                            { handle cut command }
  127.     accCopy                        = 71;                            { handle copy command }
  128.     accPaste                    = 72;                            { handle paste command }
  129.     accClear                    = 73;                            { handle clear command }
  130.  
  131. { miscellaneous Device Manager constants }
  132.     ioInProgress                = 1;                            { predefined value of ioResult while I/O is pending }
  133.     aRdCmd                        = 2;                            { low byte of ioTrap for Read calls }
  134.     aWrCmd                        = 3;                            { low byte of ioTrap for Write calls }
  135.     asyncTrpBit                    = 10;                            { trap word modifier }
  136.     noQueueBit                    = 9;                            { trap word modifier }
  137.  
  138. { flags used in the driver header and device control entry }
  139.     dReadEnable                    = 0;                            { set if driver responds to read requests }
  140.     dWritEnable                    = 1;                            { set if driver responds to write requests }
  141.     dCtlEnable                    = 2;                            { set if driver responds to control requests }
  142.     dStatEnable                    = 3;                            { set if driver responds to status requests }
  143.     dNeedGoodBye                = 4;                            { set if driver needs time for performing periodic tasks }
  144.     dNeedTime                    = 5;                            { set if driver needs time for performing periodic tasks }
  145.     dNeedLock                    = 6;                            { set if driver must be locked in memory as soon as it is opened }
  146.     dNeedLockMask                = $4000;                        { set if driver must be locked in memory as soon as it is opened }
  147.     dNeedTimeMask                = $2000;                        { set if driver needs time for performing periodic tasks }
  148.     dNeedGoodByeMask            = $1000;                        { set if driver needs to be called before the application heap is initialized }
  149.     dStatEnableMask                = $0800;                        { set if driver responds to status requests }
  150.     dCtlEnableMask                = $0400;                        { set if driver responds to control requests }
  151.     dWritEnableMask                = $0200;                        { set if driver responds to write requests }
  152.     dReadEnableMask                = $0100;                        { set if driver responds to read requests }
  153.  
  154. { run-time flags used in the device control entry }
  155.     dOpened                        = 5;                            { driver is open }
  156.     dRAMBased                    = 6;                            { dCtlDriver is a handle (1) or pointer (0) }
  157.     drvrActive                    = 7;                            { driver is currently processing a request }
  158.     drvrActiveMask                = $0080;                        { driver is currently processing a request }
  159.     dRAMBasedMask                = $0040;                        { dCtlDriver is a handle (1) or pointer (0) }
  160.     dOpenedMask                    = $0020;                        { driver is open }
  161.  
  162.  
  163. TYPE
  164.     DRVRHeader = RECORD
  165.         drvrFlags:                INTEGER;
  166.         drvrDelay:                INTEGER;
  167.         drvrEMask:                INTEGER;
  168.         drvrMenu:                INTEGER;
  169.         drvrOpen:                INTEGER;
  170.         drvrPrime:                INTEGER;
  171.         drvrCtl:                INTEGER;
  172.         drvrStatus:                INTEGER;
  173.         drvrClose:                INTEGER;
  174.         drvrName:                ARRAY [0..0] OF SInt8;
  175.     END;
  176.     DRVRHeaderPtr = ^DRVRHeader;
  177.     DRVRHeaderHandle = ^DRVRHeaderPtr;
  178.  
  179.     DCtlEntry = RECORD
  180.         dCtlDriver:                Ptr;
  181.         dCtlFlags:                INTEGER;
  182.         dCtlQHdr:                QHdr;
  183.         dCtlPosition:            LONGINT;
  184.         dCtlStorage:            Handle;
  185.         dCtlRefNum:                INTEGER;
  186.         dCtlCurTicks:            LONGINT;
  187.         dCtlWindow:                WindowPtr;
  188.         dCtlDelay:                INTEGER;
  189.         dCtlEMask:                INTEGER;
  190.         dCtlMenu:                INTEGER;
  191.     END;
  192.     DCtlPtr = ^DCtlEntry;
  193.     DCtlHandle = ^DCtlPtr;
  194.  
  195.     AuxDCE = PACKED RECORD
  196.         dCtlDriver:                Ptr;
  197.         dCtlFlags:                INTEGER;
  198.         dCtlQHdr:                QHdr;
  199.         dCtlPosition:            LONGINT;
  200.         dCtlStorage:            Handle;
  201.         dCtlRefNum:                INTEGER;
  202.         dCtlCurTicks:            LONGINT;
  203.         dCtlWindow:                GrafPtr;
  204.         dCtlDelay:                INTEGER;
  205.         dCtlEMask:                INTEGER;
  206.         dCtlMenu:                INTEGER;
  207.         dCtlSlot:                SInt8;
  208.         dCtlSlotId:                SInt8;
  209.         dCtlDevBase:            LONGINT;
  210.         dCtlOwner:                Ptr;
  211.         dCtlExtDev:                SInt8;
  212.         fillByte:                SInt8;
  213.         dCtlNodeID:                UInt32;
  214.     END;
  215.     AuxDCEPtr = ^AuxDCE;
  216.     AuxDCEHandle = ^AuxDCEPtr;
  217.  
  218.     ControlPanelDefProcPtr = ProcPtr;  { FUNCTION ControlPanelDef(message: INTEGER; item: INTEGER; numItems: INTEGER; cPanelID: INTEGER; VAR theEvent: EventRecord; cdevValue: LONGINT; cpDialog: DialogPtr): LONGINT; }
  219.     ControlPanelDefUPP = UniversalProcPtr;
  220.  
  221. CONST
  222.     uppControlPanelDefProcInfo = $000FEAB0; { FUNCTION (2 byte param, 2 byte param, 2 byte param, 2 byte param, 4 byte param, 4 byte param, 4 byte param): 4 byte result; }
  223.  
  224. FUNCTION NewControlPanelDefProc(userRoutine: ControlPanelDefProcPtr): ControlPanelDefUPP;
  225.     {$IFC NOT GENERATINGCFM }
  226.     INLINE $2E9F;
  227.     {$ENDC}
  228.  
  229. FUNCTION CallControlPanelDefProc(message: INTEGER; item: INTEGER; numItems: INTEGER; cPanelID: INTEGER; VAR theEvent: EventRecord; cdevValue: LONGINT; cpDialog: DialogPtr; userRoutine: ControlPanelDefUPP): LONGINT;
  230.     {$IFC NOT GENERATINGCFM}
  231.     INLINE $205F, $4E90;
  232.     {$ENDC}
  233.  
  234. FUNCTION GetDCtlEntry(refNum: INTEGER): DCtlHandle;
  235. {
  236.     SetChooserAlert used to simply set a bit in a low-mem global
  237.     to tell the Chooser not to display its warning message when
  238.     the printer is changed. However, under MultiFinder and System 7,
  239.     this low-mem is swapped out when a layer change occurs, and the
  240.     Chooser never sees the change. It is obsolete, and completely
  241.     unsupported on the PowerPC. 68K apps can still call it if they
  242.     wish.
  243. }
  244. {$IFC OLDROUTINENAMES  & NOT GENERATINGCFM }
  245. FUNCTION SetChooserAlert(f: BOOLEAN): BOOLEAN;
  246. {$ENDC}
  247. {
  248.   Note: DrvrInstall() is no longer supported, becuase it never really worked anyways.
  249.           There will soon be a DriverInstall() which does the right thing.
  250.  
  251.         DrvrRemove has been renamed to DriverRemove.  But, InterfaceLib for PowerPC
  252.         still exports DrvrRemove, so a macro is used to map the new name to old.
  253.  
  254. }
  255. FUNCTION DrvrRemove(refNum: INTEGER): OSErr;
  256.     {$IFC NOT GENERATINGCFM}
  257.     INLINE $301F, $A03E, $3E80;
  258.     {$ENDC}
  259. {$IFC GENERATING68K }
  260. FUNCTION DriverRemove(refNum: INTEGER): OSErr;
  261.     {$IFC NOT GENERATINGCFM}
  262.     INLINE $301F, $A03E, $3E80;
  263.     {$ENDC}
  264. {$ENDC}
  265. FUNCTION OpenDriver(name: ConstStr255Param; VAR drvrRefNum: INTEGER): OSErr;
  266. FUNCTION CloseDriver(refNum: INTEGER): OSErr;
  267. FUNCTION Control(refNum: INTEGER; csCode: INTEGER; csParamPtr: UNIV Ptr): OSErr;
  268. FUNCTION Status(refNum: INTEGER; csCode: INTEGER; csParamPtr: UNIV Ptr): OSErr;
  269. FUNCTION KillIO(refNum: INTEGER): OSErr;
  270. FUNCTION PBControlSync(paramBlock: ParmBlkPtr): OSErr;
  271.     {$IFC NOT GENERATINGCFM}
  272.     INLINE $205F, $A004, $3E80;
  273.     {$ENDC}
  274. FUNCTION PBControlAsync(paramBlock: ParmBlkPtr): OSErr;
  275.     {$IFC NOT GENERATINGCFM}
  276.     INLINE $205F, $A404, $3E80;
  277.     {$ENDC}
  278. FUNCTION PBControlImmed(paramBlock: ParmBlkPtr): OSErr;
  279.     {$IFC NOT GENERATINGCFM}
  280.     INLINE $205F, $A204, $3E80;
  281.     {$ENDC}
  282. FUNCTION PBStatusSync(paramBlock: ParmBlkPtr): OSErr;
  283.     {$IFC NOT GENERATINGCFM}
  284.     INLINE $205F, $A005, $3E80;
  285.     {$ENDC}
  286. FUNCTION PBStatusAsync(paramBlock: ParmBlkPtr): OSErr;
  287.     {$IFC NOT GENERATINGCFM}
  288.     INLINE $205F, $A405, $3E80;
  289.     {$ENDC}
  290. FUNCTION PBStatusImmed(paramBlock: ParmBlkPtr): OSErr;
  291.     {$IFC NOT GENERATINGCFM}
  292.     INLINE $205F, $A205, $3E80;
  293.     {$ENDC}
  294. FUNCTION PBKillIOSync(paramBlock: ParmBlkPtr): OSErr;
  295.     {$IFC NOT GENERATINGCFM}
  296.     INLINE $205F, $A006, $3E80;
  297.     {$ENDC}
  298. FUNCTION PBKillIOAsync(paramBlock: ParmBlkPtr): OSErr;
  299.     {$IFC NOT GENERATINGCFM}
  300.     INLINE $205F, $A406, $3E80;
  301.     {$ENDC}
  302. FUNCTION PBKillIOImmed(paramBlock: ParmBlkPtr): OSErr;
  303.     {$IFC NOT GENERATINGCFM}
  304.     INLINE $205F, $A206, $3E80;
  305.     {$ENDC}
  306. FUNCTION OpenDeskAcc(deskAccName: ConstStr255Param): INTEGER;
  307.     {$IFC NOT GENERATINGCFM}
  308.     INLINE $A9B6;
  309.     {$ENDC}
  310. PROCEDURE CloseDeskAcc(refNum: INTEGER);
  311.     {$IFC NOT GENERATINGCFM}
  312.     INLINE $A9B7;
  313.     {$ENDC}
  314. FUNCTION PBControl(paramBlock: ParmBlkPtr; async: BOOLEAN): OSErr;
  315. FUNCTION PBStatus(paramBlock: ParmBlkPtr; async: BOOLEAN): OSErr;
  316. FUNCTION PBKillIO(paramBlock: ParmBlkPtr; async: BOOLEAN): OSErr;
  317.  
  318. {$ALIGN RESET}
  319. {$POP}
  320.  
  321. {$SETC UsingIncludes := DevicesIncludes}
  322.  
  323. {$ENDC} {__DEVICES__}
  324.  
  325. {$IFC NOT UsingIncludes}
  326.  END.
  327. {$ENDC}
  328.